﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using Biblioteca.Utils;
using SERIX.Util;

namespace SERIX
{
    public partial class VinculosPropriedadesManut : Seguranca
    {

        string _operacao;
        string _idt_prop;
        string _idt_benef;
        string _idt_vinc_prop;
        string _seq_vinc;
        string _idt_prop_mestre = "";
        string _filtro = "";

        private void lovSelecaoProp(string chave, string descricao)
        {
            tbIDT_PROP.Text = descricao;
            tbIDT_PROP.Attributes.Add("chave", chave);
        }
        
        private void lovSelecaoBenef(string chave, string descricao)
        {
            tbIDT_BENEF.Text = descricao;
            tbIDT_BENEF.Attributes.Add("chave", chave);
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            base.OnLoad(e);
            lovBeneficiarios1.Selecao += new SERIX.Controles.lovBeneficiarios.SelecaoDelegate(lovSelecaoBenef);
            lovPropriedade.Selecao += new SERIX.Controles.lovGenerica.SelecaoDelegate(lovSelecaoProp);
            lovPropriedade.ConfigurarLov("Serix", "srx_propriedades", "IDT_PROP", "NOME_PROP", "NOME_PROP", "Pesquisa de Propriedades", "Nome"); 


            _operacao = Request["OP"];
            if (!String.IsNullOrEmpty(Request["idt_prop"]))
            {
                _idt_prop = Server.UrlDecode(Criptografia.Descriptografar(Request["idt_prop"]));
            }
            if (!String.IsNullOrEmpty(Request["idt_benef"]))
            {
                _idt_benef = Server.UrlDecode(Criptografia.Descriptografar(Request["idt_benef"]));
            }
            if (!String.IsNullOrEmpty(Request["idt_vinc_prop"]))
            {
                _idt_vinc_prop = Server.UrlDecode(Criptografia.Descriptografar(Request["idt_vinc_prop"]));
            }
            if (!String.IsNullOrEmpty(Request["seq_vinc"]))
            {
                _seq_vinc = Server.UrlDecode(Criptografia.Descriptografar(Request["seq_vinc"]));
            }
            if (!String.IsNullOrEmpty(Request["idt_prop_mestre"]))
            {
                _idt_prop_mestre = Server.UrlDecode(Criptografia.Descriptografar(Request["idt_prop_mestre"]));
                _filtro = "?idt_prop=" + Server.UrlEncode(Request["idt_prop_mestre"]);
            }
            if (!Page.IsPostBack)
            {
                BiblioSERIX.PreencherDdl(ref ddlTipoVinculo, CTiposVincPropriedades.ObterTodos(UsuAut.Login), "dsc_vinc_prop", "idt_vinc_prop");
                switch (_operacao)
                {
                    case "R":
                        {
                            lblTitulo.Text = "Detalhes do Vinculos de Propriedades";
                            Cancelar_Button.Visible = false;
                            CVinculosPropriedades vinculospropriedades = CVinculosPropriedades.PesquisaporCodigo(_idt_prop, _idt_benef, _idt_vinc_prop, _seq_vinc, UsuAut.Login);
                            CPropriedades prop = CPropriedades.PesquisaporCodigo(_idt_prop, UsuAut.Login);
                            tbIDT_PROP.Text = prop.Nome_prop;
                            tbIDT_PROP.Attributes.Add("chave", prop.Idt_prop);
                            CBeneficiarios benef = CBeneficiarios.PesquisaporCodigo(_idt_benef, UsuAut.Login);
                            tbIDT_BENEF.Text = benef.Nom_benef;
                            tbIDT_BENEF.Attributes.Add("chave", benef.Idt_benef);
                            ddlTipoVinculo.SelectedValue = vinculospropriedades.Idt_vinc_prop;
                            tbDAT_INI.Text = vinculospropriedades.Dat_ini;
                            ddlSTATUS.SelectedValue = vinculospropriedades.Status;
                            tbDAT_TER.Text = vinculospropriedades.Dat_ter;
                            DesabilitaControles();
                            break;
                        }
                    case "U":
                        {
                            lblTitulo.Text = "Alteração de Vinculos de Propriedades";
                            CVinculosPropriedades vinculospropriedades = CVinculosPropriedades.PesquisaporCodigo(_idt_prop, _idt_benef, _idt_vinc_prop, _seq_vinc, UsuAut.Login);
                            CPropriedades prop = CPropriedades.PesquisaporCodigo(_idt_prop, UsuAut.Login);
                            tbIDT_PROP.Text = prop.Nome_prop;
                            tbIDT_PROP.Attributes.Add("chave", prop.Idt_prop);
                            tbIDT_PROP.Attributes.Add("chave_ant", prop.Idt_prop);
                            CBeneficiarios benef = CBeneficiarios.PesquisaporCodigo(_idt_benef, UsuAut.Login);
                            tbIDT_BENEF.Text = benef.Nom_benef;
                            tbIDT_BENEF.Attributes.Add("chave", benef.Idt_benef);
                            tbIDT_BENEF.Attributes.Add("chave_ant", benef.Idt_benef);
                            ddlTipoVinculo.SelectedValue = vinculospropriedades.Idt_vinc_prop;
                            ddlTipoVinculo.Attributes.Add("chave_ant", vinculospropriedades.Idt_vinc_prop);
                            tbDAT_INI.Text = vinculospropriedades.Dat_ini;
                            ddlSTATUS.SelectedValue = vinculospropriedades.Status;
                            tbDAT_TER.Text = vinculospropriedades.Dat_ter;
                            //desativando lovs por conta da restrição da trigger
                            ((Button)lovBeneficiarios1.FindControl("btnLov")).Enabled = false;
                            ((Button)lovPropriedade.FindControl("btnLov")).Enabled = false;
                            break;

                        }
                    case "I":
                        {
                            lblTitulo.Text = "Inserção de Vinculos de Propriedades";
                            if (!string.IsNullOrEmpty(_idt_prop_mestre))
                            {
                                CPropriedades prop = CPropriedades.PesquisaporCodigo(_idt_prop_mestre, UsuAut.Login);
                                tbIDT_PROP.Text = prop.Nome_prop;
                                tbIDT_PROP.Attributes.Add("chave", prop.Idt_prop);
                                tbIDT_PROP.Attributes.Add("chave_ant", prop.Idt_prop);
                                //((Button)lovPropriedades1.FindControl("btnLov")).Enabled = false;
                                lovBeneficiarios1.Focus();
                            }
                            break;
                        }
                    case "D":
                        {
                            lblTitulo.Text = "Exclusão de Vinculos de Propriedades";
                            CVinculosPropriedades vinculospropriedades = CVinculosPropriedades.PesquisaporCodigo(_idt_prop, _idt_benef, _idt_vinc_prop, _seq_vinc, UsuAut.Login);
                            CPropriedades prop = CPropriedades.PesquisaporCodigo(_idt_prop, UsuAut.Login);
                            tbIDT_PROP.Text = prop.Nome_prop;
                            tbIDT_PROP.Attributes.Add("chave", prop.Idt_prop);
                            CBeneficiarios benef = CBeneficiarios.PesquisaporCodigo(_idt_benef, UsuAut.Login);
                            tbIDT_BENEF.Text = benef.Nom_benef;
                            tbIDT_BENEF.Attributes.Add("chave", benef.Idt_benef);
                            ddlTipoVinculo.SelectedValue = vinculospropriedades.Idt_vinc_prop;
                            tbDAT_INI.Text = vinculospropriedades.Dat_ini;
                            ddlSTATUS.SelectedValue = vinculospropriedades.Status;
                            tbDAT_TER.Text = vinculospropriedades.Dat_ter;
                            DesabilitaControles();
                            break;
                        }
                    default: break;
                }
            }
        }

        protected void DesabilitaControles()
        {
            ((Button)lovBeneficiarios1.FindControl("btnLov")).Enabled = false;
            ((Button)lovPropriedade.FindControl("btnLov")).Enabled = false;
            ddlTipoVinculo.Enabled = false;
            tbDAT_INI.Enabled = false;
            tbDAT_INI.BorderStyle = System.Web.UI.WebControls.BorderStyle.None;
            tbDAT_INI.BackColor = System.Drawing.Color.WhiteSmoke;
            ddlSTATUS.Enabled = false;
            ddlSTATUS.BorderStyle = System.Web.UI.WebControls.BorderStyle.None;
            ddlSTATUS.BackColor = System.Drawing.Color.WhiteSmoke;
            tbDAT_TER.Enabled = false;
            tbDAT_TER.BorderStyle = System.Web.UI.WebControls.BorderStyle.None;
            tbDAT_TER.BackColor = System.Drawing.Color.WhiteSmoke;
        }

        protected void Ok_Button_Click(object sender, EventArgs e)
        {
            try
            {
                
                CVinculosPropriedades vinculospropriedades;
                if (_operacao[0].Equals('U'))
                {
                    _idt_prop = tbIDT_PROP.Attributes["chave_ant"];
                    _idt_benef = tbIDT_BENEF.Attributes["chave_ant"];
                    _idt_vinc_prop = ddlTipoVinculo.Attributes["chave_ant"];
                }
                else
                {
                    _idt_prop = tbIDT_PROP.Attributes["chave"];
                    _idt_benef = tbIDT_BENEF.Attributes["chave"];
                    _idt_vinc_prop = ddlTipoVinculo.SelectedValue;
                }
                if (String.IsNullOrEmpty(_seq_vinc) && _operacao[0].Equals('I'))
                {
                    _seq_vinc = CVinculosPropriedades.ObterNovoIdt(_idt_prop, _idt_benef, _idt_vinc_prop, UsuAut.Login).ToString() ;
                }
                vinculospropriedades = new CVinculosPropriedades(_idt_prop, _idt_benef, _idt_vinc_prop, _seq_vinc, tbDAT_INI.Text, ddlSTATUS.SelectedValue, tbDAT_TER.Text);
                switch (_operacao)
                {
                    case "I":
                        {
                            vinculospropriedades.Inserir(UsuAut.Login);
                            break;
                        }
                    case "U":
                        {
                            vinculospropriedades.New_idt_prop = tbIDT_PROP.Attributes["chave"];
                            vinculospropriedades.New_idt_benef = tbIDT_BENEF.Attributes["chave"];
                            vinculospropriedades.New_idt_vinc_prop = ddlTipoVinculo.SelectedValue;
                            vinculospropriedades.Alterar(UsuAut.Login);
                            break;
                        }
                    case "D":
                        {
                            vinculospropriedades.Excluir(UsuAut.Login);
                            break;
                        }
                    default: break;
                }
                Response.Redirect("VinculosPropriedades.aspx" + _filtro);
            }
            catch (Exception ex)
            {
                lblErro.Text = "*Erro: " + ex.Message;
                lblErro.Visible = true;
            }
        }

        protected void Cancelar_Button_Click(object sender, EventArgs e)
        {
            Response.Redirect("VinculosPropriedades.aspx" + _filtro);
        }
    }
}
